﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BarFaculdade.Controller;

namespace BarFaculdade
{
    public partial class frmPesqCli : Form
    {
        public frmPesqCli()
        {
            InitializeComponent();
        }

        private void btnPesquisa_Click(object sender, EventArgs e)
        {
            if (tbCodigo.Text.Length > 0)
            {
                tbNome.Clear();
                Pesquisar(int.Parse(tbCodigo.Text));
            }
            else if (tbNome.Text.Length > 0)
            {
                tbCodigo.Clear();
                Pesquisar(tbNome.Text);
            }
            else
            {
                Pesquisar();
            }
            
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            frmCadClientes cad = new frmCadClientes();

            cad.ShowDialog();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            frmEdtCli edit = new frmEdtCli();

            edit.Show();
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            frmExCli exc = new frmExCli();
            exc.Show();
        }

        private void btnFechar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void gdvClientes_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            string codigo = string.Empty;
            string nome = string.Empty;
            string email = string.Empty;
            string rg = string.Empty;
            string cpf = string.Empty;
            string data = string.Empty;

            VisualizaDetalhes(codigo, nome, email, rg, cpf, data);

        }

        /// <summary>
        /// Método de pesquisa por código
        /// </summary>
        /// <param name="codigo">Codigo do cliente</param>
        private void Pesquisar(int codigo)
        {
            ClienteController cliControl = new ClienteController();

            gdvClientes.DataSource = cliControl.BuscaCliente(codigo, "");
            gdvClientes.DataMember = "Cliente";
            MontaGrid();
            
        }

        /// <summary>
        /// Método de pesquisa por nome
        /// </summary>
        /// <param name="nome">Nome do cliente</param>
        private void Pesquisar(string nome)
        {
            ClienteController cliControl = new ClienteController();

            gdvClientes.DataSource = cliControl.BuscaCliente(0, nome);
            gdvClientes.DataMember = "Cliente";
            MontaGrid();
        }

        /// <summary>
        /// Método de pesquisa para todos clientes
        /// </summary>
        private void Pesquisar()
        {
            ClienteController cliControl = new ClienteController();

            gdvClientes.DataSource = cliControl.BuscaCliente(0, "todos");
            gdvClientes.DataMember = "Cliente";
            MontaGrid();
        }

        /// <summary>
        /// Padroniza o layout do DataGridView
        /// </summary>
        private void MontaGrid()
        {
            gdvClientes.Columns["id"].Visible = false;
            gdvClientes.Columns["codigo"].HeaderText = "Codigo";
            gdvClientes.Columns["codigo"].Width = 85;
            gdvClientes.Columns["nome"].HeaderText = "Nome";
            gdvClientes.Columns["nome"].Width = 180;
            gdvClientes.Columns["email"].HeaderText = "Email";
            gdvClientes.Columns["email"].Width = 150;
            gdvClientes.Columns["cpf"].HeaderText = "CPF";
            gdvClientes.Columns["rg"].HeaderText = "RG";
            gdvClientes.Columns["datanasc"].HeaderText = "Data Nasc.";

        }

        private void VisualizaDetalhes(string codigo, string nome, string email, string rg, string cpf, string data)
        {

        }

    }
}
